<?php

namespace app\api\controller;

use app\admin\model\discord\Guild;
use app\common\controller\MjApi;
use fast\Random;
use app\admin\model\account\Sessions;

class Mj extends MjApi
{
    protected $noNeedLogin = ['session','config'];
    protected $noNeedRight = '*';

    public function _initialize()
    {
        parent::_initialize();
    }

    public function session()
    {
        // 获取请求参数中的 code
        $code = $this->request->param('code');
        if (!$code) {
            return $this->error('invalid code');
        }

        // 读取 token 表，并生成一个新的 session_code
        try {
            // 使用模型查询数据库
            $session = Sessions::where('code', $code)->find();
            if (!$session || $session->status == -1){
                return $this->error("invalid code");
            }

            if($session->status ==0){

                $session->status = 1;
                // 使用 DateTime 设置当前时间
                $now = new \DateTime();
                $session->active_time = $now->format('Y-m-d H:i:s'); // 格式化为 datetime 格式
                // 计算结束时间

                $end_time = (clone $now)->modify("+{$session->duration} hours");
                $session->end_time = $end_time->format('Y-m-d H:i:s'); // 格式化为 datetime 格式
                $session->save();
            }

            // 生成新的 session_code
            $session_code = Random::uuid();

            // 更新 session_code 字段
            $session->token = $session_code;
            $session->save();

            // 返回 session_code


        } catch (\Exception $e) {
            return $this->error($e->getMessage());
        }
        return $this->success('',$session);
    }

    public function discord_token2()
    {
        //申请code
        $guild = Guild::where('uid',$this->uid)->with('discord')->find();
        if (empty($guild)){
            $guild = Guild::where('uid',0)->with('discord')->find();
            $guild->uid = $this->uid;
            $guild->save();
        }
        $guild = $guild->toArray();

        $guild['token'] = custom_encrypt(json_encode(['id'=>$guild['token']]),'getLoginArgs');
        return $this->success('',$guild);
    }

    public function config()
    {
        return $this->success('',[
            "sensitive"=>"",
            "window_notify"=>"通知: 官网封号严重，还望谅解及时保存资料，如有资料丢失联系客服，发现刷图或者脚本跑图的账号，举报有奖励"
        ]);
    }

    public function status()
    {
        if($this->uid==0){
            $this->error('账号已掉线，或授权码已过期');
        }
        return $this->success('');
    }
}
